/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package View;

import Dao.AtividadeDao;
import Dao.AtividadeDaoImplJPA;
import Dao.NotaDao;
import Dao.NotaDaoImplJPA;
import Dao.TurmaDao;
import Dao.TurmaDaoImplJPA;
import Pojo.Atividade;
import Pojo.Professor;
import Pojo.Turma;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;

/**
 *
 * @author thiago
 */
public class FormLancarAtividades extends javax.swing.JInternalFrame {
    /**
     * Acesso necessário para o caso de chamar o cadastro de professore
     */
    private int acesso;
    
    /** 
     * String de modificação. N=novo, A=alteração
     */
    private String modificacao;
    
    /**
     * Objeto professor para acesso.
     */
    private Professor professorAcesso;
    
    /** Turma atual*/
    private Turma turmaAtual;
    
    /**
     * Getter do acesso
     * @return 
     */
    public int getAcesso() {
        return acesso;
    }
    
    /**
     * Setter de acesso
     * @param acesso 
     */
    private void setAcesso(int acesso){
        this.acesso = acesso;
    }

    /**
     * Getters de professor
     * @return 
     */
    public Professor getProfessorAcesso() {
        return professorAcesso;
    }

    /**
     * setter de professor
     * @param professorAcesso 
     */
    private void setProfessorAcesso(Professor professorAcesso) {
        this.professorAcesso = professorAcesso;
    }

    /**
     * Getter de modificação
     * @return 
     */
    public String getModificacao() {
        return modificacao;
    }

    /**
     * Setter de modificação
     * @param modificacao 
     */
    private void setModificacao(String modificacao) {
        this.modificacao = modificacao;
    }

    public Turma getTurmaAtual() {
        return turmaAtual;
    }

    private void setTurmaAtual(Turma turmaAtual) {
        this.turmaAtual = turmaAtual;
    }
    
    
    /**
     * Creates new form FormLancarAtividades
     */
    public FormLancarAtividades(int acesso, Professor professor) {
        initComponents();
        this.setAcesso(acesso);
        this.setProfessorAcesso(professor);
        this.buscarTurmasProfessor();
    }
    
    private void buscarTurmasProfessor(){
        TurmaDao turmaDao = new TurmaDaoImplJPA();
        List<Turma> listaTurmas = turmaDao.pesquisarPorProfessor(this.getProfessorAcesso());
        
        for(Turma turma : listaTurmas){
            if (turma.getFinalizada()==false){
                cbbTurmas.addItem(turma.getId()+" - "+turma.getDisciplina().getNome()+" - "+turma.getAno()+" - "+turma.getPeriodo());
            }
        }
    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jScrollPane1 = new javax.swing.JScrollPane();
        jTable1 = new javax.swing.JTable();
        jPanel1 = new javax.swing.JPanel();
        jLabel1 = new javax.swing.JLabel();
        cbbTurmas = new javax.swing.JComboBox();
        jPanel2 = new javax.swing.JPanel();
        jLabel2 = new javax.swing.JLabel();
        txtCodigo = new javax.swing.JTextField();
        jLabel3 = new javax.swing.JLabel();
        txtNome = new javax.swing.JTextField();
        jLabel4 = new javax.swing.JLabel();
        txtTipo = new javax.swing.JTextField();
        jLabel5 = new javax.swing.JLabel();
        ftxtData = new javax.swing.JFormattedTextField();
        jLabel6 = new javax.swing.JLabel();
        txtValor = new javax.swing.JTextField();
        btnNovo = new javax.swing.JButton();
        btnAlterar = new javax.swing.JButton();
        btnRemover = new javax.swing.JButton();
        btnSalvar = new javax.swing.JButton();
        btnCancelar = new javax.swing.JButton();
        jLabel7 = new javax.swing.JLabel();
        btnCarregarAtividades = new javax.swing.JButton();
        jScrollPane2 = new javax.swing.JScrollPane();
        tblAtividades = new javax.swing.JTable();

        jTable1.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {null, null, null, null},
                {null, null, null, null},
                {null, null, null, null},
                {null, null, null, null}
            },
            new String [] {
                "Title 1", "Title 2", "Title 3", "Title 4"
            }
        ));
        jScrollPane1.setViewportView(jTable1);

        setClosable(true);
        setTitle("Lançar Atividades");

        jPanel1.setBorder(javax.swing.BorderFactory.createEtchedBorder());

        jLabel1.setText("Turmas");

        jPanel2.setBorder(javax.swing.BorderFactory.createEtchedBorder());

        jLabel2.setText("Código");

        txtCodigo.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyPressed(java.awt.event.KeyEvent evt) {
                txtCodigoKeyPressed(evt);
            }
        });

        jLabel3.setText("Nome");

        txtNome.setEnabled(false);

        jLabel4.setText("Tipo");

        txtTipo.setEnabled(false);

        jLabel5.setText("Data");

        ftxtData.setColumns(10);
        ftxtData.setFormatterFactory(new javax.swing.text.DefaultFormatterFactory(new javax.swing.text.DateFormatter()));
        ftxtData.setEnabled(false);

        jLabel6.setText("Valor");

        txtValor.setEnabled(false);

        btnNovo.setText("Novo");
        btnNovo.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnNovoActionPerformed(evt);
            }
        });

        btnAlterar.setText("Alterar");
        btnAlterar.setEnabled(false);
        btnAlterar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnAlterarActionPerformed(evt);
            }
        });

        btnRemover.setText("Remover");
        btnRemover.setEnabled(false);
        btnRemover.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnRemoverActionPerformed(evt);
            }
        });

        btnSalvar.setText("Salvar");
        btnSalvar.setEnabled(false);
        btnSalvar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnSalvarActionPerformed(evt);
            }
        });

        btnCancelar.setText("Cancelar");
        btnCancelar.setEnabled(false);
        btnCancelar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnCancelarActionPerformed(evt);
            }
        });

        jLabel7.setText("ex: dd/mm/aaaa");

        javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
        jPanel2.setLayout(jPanel2Layout);
        jPanel2Layout.setHorizontalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel2Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jLabel6)
                    .addComponent(jLabel5)
                    .addComponent(jLabel4)
                    .addComponent(jLabel3)
                    .addComponent(jLabel2))
                .addGap(12, 12, 12)
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                        .addComponent(txtCodigo, javax.swing.GroupLayout.PREFERRED_SIZE, 59, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addComponent(txtNome, javax.swing.GroupLayout.DEFAULT_SIZE, 138, Short.MAX_VALUE)
                        .addComponent(txtValor, javax.swing.GroupLayout.PREFERRED_SIZE, 60, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addComponent(txtTipo))
                    .addGroup(jPanel2Layout.createSequentialGroup()
                        .addComponent(ftxtData, javax.swing.GroupLayout.PREFERRED_SIZE, 89, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jLabel7, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                    .addComponent(btnSalvar, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(btnRemover, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(btnAlterar, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(btnNovo, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(btnCancelar, javax.swing.GroupLayout.DEFAULT_SIZE, 159, Short.MAX_VALUE))
                .addContainerGap())
        );
        jPanel2Layout.setVerticalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel2Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel2)
                    .addComponent(txtCodigo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(btnNovo))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel3)
                    .addComponent(txtNome, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(btnAlterar))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(txtTipo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabel4)
                    .addComponent(btnRemover))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(ftxtData, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabel5)
                    .addComponent(btnSalvar)
                    .addComponent(jLabel7))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                        .addComponent(jLabel6)
                        .addComponent(txtValor, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addComponent(btnCancelar))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        btnCarregarAtividades.setText("Carregar Atividades");
        btnCarregarAtividades.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnCarregarAtividadesActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addComponent(jLabel1)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(cbbTurmas, javax.swing.GroupLayout.PREFERRED_SIZE, 244, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(btnCarregarAtividades, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
                .addContainerGap())
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel1)
                    .addComponent(cbbTurmas, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(btnCarregarAtividades))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        tblAtividades.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {

            },
            new String [] {
                "Código", "Nome", "Tipo", "Data", "Valor"
            }
        ) {
            Class[] types = new Class [] {
                java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class
            };
            boolean[] canEdit = new boolean [] {
                false, false, false, false, false
            };

            public Class getColumnClass(int columnIndex) {
                return types [columnIndex];
            }

            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return canEdit [columnIndex];
            }
        });
        tblAtividades.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                tblAtividadesMouseClicked(evt);
            }
        });
        jScrollPane2.setViewportView(tblAtividades);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                    .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(jScrollPane2))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 214, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void carregarDadosCampos(int codigo){
        AtividadeDao atividadeDao = new AtividadeDaoImplJPA();
        Atividade atividade = atividadeDao.pesquisarPorId(codigo);

        if ((atividade != null)&&(atividade.getTurma().getId()==this.getTurmaAtual().getId())){
            txtCodigo.setText(String.valueOf(atividade.getId()));
            txtNome.setText(atividade.getNome());
            txtTipo.setText(atividade.getTipo());
            DateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
            String dataString; 
            try{
                dataString = formatter.format(atividade.getData().getTime()); 
            }catch(Exception e){
                dataString = null;
            }
            ftxtData.setText(dataString);
            txtValor.setText(String.valueOf(atividade.getValor()));

            btnNovo.setEnabled(true);
            btnAlterar.setEnabled(true);
            btnRemover.setEnabled(true);
            btnSalvar.setEnabled(false);
            btnCancelar.setEnabled(false);
        } else {
            txtNome.setText("");
            txtTipo.setText("");
            ftxtData.setText("");
            txtValor.setText("");

            btnNovo.setEnabled(true);
            btnAlterar.setEnabled(false);
            btnRemover.setEnabled(false);
            btnSalvar.setEnabled(false);
            btnCancelar.setEnabled(false);
            JOptionPane.showMessageDialog(null, "Não existe uma atividade com esse código.");
        }
    }
    
    private void carregarDadosTabela(){
        AtividadeDao atividadeDao = new AtividadeDaoImplJPA();
        List<Atividade> listaAtividades = atividadeDao.pesquisarPorTurma(this.getTurmaAtual());
        
        DefaultTableModel model = (DefaultTableModel) tblAtividades.getModel();
        Object[] linha = new Object[5];

        model.setRowCount(0);

        for (Atividade a: listaAtividades){
            linha[0] = String.valueOf(a.getId());
            linha[1] = a.getNome();
            linha[2] = a.getTipo();
            DateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
            String dataString; 
            try{
                dataString = formatter.format(a.getData().getTime()); 
            }catch(Exception e){
                System.err.print(e);
                dataString = null;
            }
            linha[3] = dataString;
            linha[4] = a.getValor();
            model.addRow(linha);
        }
        tblAtividades.repaint();
    }
    
    private void btnNovoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnNovoActionPerformed
        txtCodigo.setEnabled(false);
        txtNome.setEnabled(true);
        txtTipo.setEnabled(true);
        ftxtData.setEnabled(true);
        txtValor.setEnabled(true);
        
        
        txtNome.setText("");
        txtTipo.setText("");
        ftxtData.setText("");
        txtValor.setText("");
        
        btnNovo.setEnabled(false);
        btnAlterar.setEnabled(false);
        btnRemover.setEnabled(false);
        btnSalvar.setEnabled(true);
        btnCancelar.setEnabled(true);
        
        txtNome.grabFocus();
        this.setModificacao("N");
    }//GEN-LAST:event_btnNovoActionPerformed

    private void btnAlterarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnAlterarActionPerformed
        if (txtCodigo.getText().length()==0){
            JOptionPane.showMessageDialog(null, "Informe um aluno para ser alterado.");
        }else{
            txtCodigo.setEnabled(false);
            txtNome.setEnabled(true);
            txtTipo.setEnabled(true);
            ftxtData.setEnabled(true);
            txtValor.setEnabled(true);

            btnNovo.setEnabled(false);
            btnAlterar.setEnabled(false);
            btnRemover.setEnabled(false);
            btnSalvar.setEnabled(true);
            btnCancelar.setEnabled(true);

            txtNome.grabFocus();
            this.setModificacao("A");
        }
    }//GEN-LAST:event_btnAlterarActionPerformed

    private void btnRemoverActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnRemoverActionPerformed
        if (txtCodigo.getText().length()==0){
            JOptionPane.showMessageDialog(null, "Informe um aluno para ser removido.");
        }else{
            AtividadeDao atividadeDao = new AtividadeDaoImplJPA();
            Atividade atividade = atividadeDao.pesquisarPorId(Integer.parseInt(txtCodigo.getText()));
            NotaDao notaDao = new NotaDaoImplJPA();
            if (notaDao.pesquisarPorAtividade(atividade).size()>0){
                JOptionPane.showMessageDialog(null, "Impossível remover a atividades, pois esta tem notas cadastradas.");
                return;
            }            
            if (JOptionPane.showConfirmDialog(null, "Deseja remover o aluno?")==0){
                String dataString = ftxtData.getText();
                DateFormat formatter = new SimpleDateFormat("dd/MM/yyyy"); 
                Date date ; 
                try{
                    date = (Date) formatter.parse(dataString); 
                }catch(Exception e){
                    date = null;
                }
                Calendar cal= Calendar.getInstance();
                cal.setTime(date);
                atividade = new Atividade(Integer.parseInt(txtCodigo.getText()),txtNome.getText(),txtTipo.getText(),cal, Double.parseDouble(txtValor.getText()));
                if (atividadeDao.remover(atividade)==true){
                
                    txtCodigo.setEnabled(true);
                    txtNome.setEnabled(false);
                    txtTipo.setEnabled(false);
                    ftxtData.setEnabled(false);
                    txtValor.setEnabled(false);

                    txtCodigo.setText("");
                    txtNome.setText("");
                    txtTipo.setText("");
                    ftxtData.setText("");
                    txtValor.setText("");

                    btnNovo.setEnabled(true);
                    btnAlterar.setEnabled(false);
                    btnRemover.setEnabled(false);
                    btnSalvar.setEnabled(false);
                    btnCancelar.setEnabled(false);
                    
                    JOptionPane.showMessageDialog(null, "Atividade removida com sucesso removido com sucesso.");
                    
                    this.carregarDadosTabela();
                }else{
                    JOptionPane.showMessageDialog(null, "Erro ao remover o aluno.");
                }
            }
        }
    }//GEN-LAST:event_btnRemoverActionPerformed

    private void btnSalvarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnSalvarActionPerformed

        AtividadeDao atividadeDao = new AtividadeDaoImplJPA();
        Atividade atividade;
        boolean salvo = false;

        if (txtNome.getText().length()==0){
            JOptionPane.showMessageDialog(null, "Informe o nome da Atividade.");
            return;
        }

        if (txtTipo.getText().length()==0){
            JOptionPane.showMessageDialog(null, "Informe o tipo da Atividade.");
            return;
        }
        
        if (txtValor.getText().length()==0){
            JOptionPane.showMessageDialog(null, "Informe o valor da Atividade.");
            return;
        }

        if (ftxtData.getText().length()==0){
            JOptionPane.showMessageDialog(null, "Informe a data da Atividade.");
            return;
        }
        
        String dataString = ftxtData.getText();
        DateFormat formatter = new SimpleDateFormat("dd/MM/yyyy"); 
        Date date ; 
        try{
            date = (Date) formatter.parse(dataString); 
        }catch(Exception e){
            date = null;
        }
        Calendar cal= Calendar.getInstance();
        cal.setTime(date);
        
        if (this.getModificacao().equals("A")){
            atividade = new Atividade(Integer.parseInt(txtCodigo.getText()),txtNome.getText(),txtTipo.getText(),cal, Double.parseDouble(txtValor.getText()),this.getTurmaAtual());
            if (atividadeDao.alterar(atividade)==true){
                JOptionPane.showMessageDialog(null, "Atividade alterada com sucesso.");
                salvo = true;
            }else{
                JOptionPane.showMessageDialog(null, "Erro ao alterar a atividade.");
                salvo = false;
            }
        }else if (this.getModificacao().equals("N")){
            atividade = new Atividade(txtNome.getText(),txtTipo.getText(),cal, Double.parseDouble(txtValor.getText()),this.getTurmaAtual());

            if (atividadeDao.inserir(atividade)==true){
                JOptionPane.showMessageDialog(null, "Atividade inserida com sucesso.");
                salvo = true;
            }else{
                JOptionPane.showMessageDialog(null, "Erro ao inserir a atividade.");
                salvo = false;
            }
        }

        if (salvo == true){
            txtCodigo.setEnabled(true);
            txtNome.setEnabled(false);
            txtTipo.setEnabled(false);
            ftxtData.setEnabled(false);
            txtValor.setEnabled(false);

            txtCodigo.setText("");
            txtNome.setText("");
            txtTipo.setText("");
            ftxtData.setText("");
            txtValor.setText("");

            btnNovo.setEnabled(true);
            btnAlterar.setEnabled(false);
            btnRemover.setEnabled(false);
            btnSalvar.setEnabled(false);
            btnCancelar.setEnabled(false);

            this.setModificacao("");

            txtCodigo.grabFocus();
            
            this.carregarDadosTabela();
        }
    }//GEN-LAST:event_btnSalvarActionPerformed

    private void btnCancelarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnCancelarActionPerformed
        txtCodigo.setEnabled(true);
        txtNome.setEnabled(false);
        txtTipo.setEnabled(false);
        ftxtData.setEnabled(false);
        txtValor.setEnabled(false);

        txtCodigo.setText("");
        txtNome.setText("");
        txtTipo.setText("");
        ftxtData.setText("");
        txtValor.setText("");

        btnNovo.setEnabled(true);
        btnAlterar.setEnabled(false);
        btnRemover.setEnabled(false);
        btnSalvar.setEnabled(false);
        btnCancelar.setEnabled(false);
    }//GEN-LAST:event_btnCancelarActionPerformed

    private void btnCarregarAtividadesActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnCarregarAtividadesActionPerformed
        String turmaString = (String) cbbTurmas.getSelectedItem();
        if (turmaString!=null){
            String[] dados = turmaString.split(" - ");
            TurmaDao turmaDao = new TurmaDaoImplJPA();
            Turma turma = turmaDao.pesquisarPorId(Integer.parseInt(dados[0]));
            this.setTurmaAtual(turma);
                        
            this.carregarDadosTabela();
        }
    }//GEN-LAST:event_btnCarregarAtividadesActionPerformed

    private void tblAtividadesMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_tblAtividadesMouseClicked
        if (tblAtividades.getSelectedRow()>=0){
            int linha = tblAtividades.getSelectedRow();
            this.carregarDadosCampos(Integer.parseInt(tblAtividades.getValueAt(linha, 0).toString()));
        }
    }//GEN-LAST:event_tblAtividadesMouseClicked

    private void txtCodigoKeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_txtCodigoKeyPressed
        if ((evt.getKeyCode()==10)&&(this.getTurmaAtual() != null)){
            int codigo;
            try{
                codigo = Integer.parseInt(txtCodigo.getText());
            }catch(Exception e){
                return;
            }
            this.carregarDadosCampos(codigo);
        }
    }//GEN-LAST:event_txtCodigoKeyPressed

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton btnAlterar;
    private javax.swing.JButton btnCancelar;
    private javax.swing.JButton btnCarregarAtividades;
    private javax.swing.JButton btnNovo;
    private javax.swing.JButton btnRemover;
    private javax.swing.JButton btnSalvar;
    private javax.swing.JComboBox cbbTurmas;
    private javax.swing.JFormattedTextField ftxtData;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JLabel jLabel5;
    private javax.swing.JLabel jLabel6;
    private javax.swing.JLabel jLabel7;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JScrollPane jScrollPane2;
    private javax.swing.JTable jTable1;
    private javax.swing.JTable tblAtividades;
    private javax.swing.JTextField txtCodigo;
    private javax.swing.JTextField txtNome;
    private javax.swing.JTextField txtTipo;
    private javax.swing.JTextField txtValor;
    // End of variables declaration//GEN-END:variables
}
